Subject: GK

Envivo Bio, Inc.; Confidential

logo

1.1 Overview of microbial community composition

Figure 1 is an interactive figure showing the microbial community composition in each collected sample. Here, each color and shade corresponds to a different genus. For reference, domestic dogs (Canis familiaris) and gray wolves (Canis lupus) are different species that belong to the same genus (Canis).

You can interact with this figure by:

Figure 1: Microbial community composition of collected saliva and CapScan samples. Taxonomic composition is reported at the genus rank. Genera present at <1% relative abundance across all samples are reported as “Other genera”. Note: Blue = Firmicutes; Yellow = Actinomycetes; Green = Bacteroidetes; Red = Proteobacteria; Purple = all other phyla. Shades of the same color (except purple) correspond to different genera from the same phylum.



1.2 High-resolution snapshot of community composition

Figure 2 is an interactive figure showing the microbial community composition at higher taxononomic resolution. Here, each row corresponds to a unique microbe.

You can interact with this figure by:



Figure 2: Heat map showing relative abundance of microbes in each sample (N = 224 total identified). Each row corresponds to a unique microbe and each column corresponds to an individual sample. Note the relative abundance colorscale is in log units.



1.3 Notable microbe detected



1.4 References

Chang, F.Y., Siuti, P., Laurent, S., Williams, T., Glassey, E., Sailer, A.W., et al. (2021) Gut-inhabiting Clostridia build human GPCR ligands by conjugating neurotransmitters with diet- and human-derived fatty acids. Nat Microbiol 6: 792–805.

LS0tCnRpdGxlOiAiPGJyPiBUYXhvbm9taWMgcHJvZmlsaW5nIG9mIGJhY3RlcmlhbCBhbmQgYXJjaGFlYWwgY29tbXVuaXRpZXMgZnJvbSBzYWxpdmEgYW5kIENhcFNjYW4tc2FtcGxlZCBndXQgbWV0YWdlbm9tZXMiCm91dHB1dDoKICBodG1sX2RvY3VtZW50OgogICAgZGZfcHJpbnQ6IHBhZ2VkCiAgICB0b2M6IHRydWUKICAgIHRvY19mbG9hdDogdHJ1ZQogIGh0bWxfbm90ZWJvb2s6IGRlZmF1bHQKICBwZGZfZG9jdW1lbnQ6IGRlZmF1bHQKLS0tCgotLS0KCjxzdHlsZT4KZGl2LmhpZ2hsaWdodCB7CmJhY2tncm91bmQtY29sb3I6ICNGMkYyRjI7CnBhZGRpbmc6IDBweDsKYm9yZGVyLXJhZGl1czogMnB4Owp9Cgo8L3N0eWxlPgoKIyMjIDxiPjxpPlN1YmplY3Q6IEdLPC9iPjwvaT4KKkVudml2byBCaW8sIEluYy47IENvbmZpZGVudGlhbCoKCmBgYHtyIHNldHVwLCBpbmNsdWRlID0gRkFMU0V9CmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gVFJVRSkKYGBgCgpgYGB7ciBhZGQgbG9nbywgZWNobyA9IEZBTFNFfQpsb2dvX3BhdGggPC0gIi4uL2xvZ28vZW52aXZvLnN2ZyIKCmh0bWx0b29sczo6aW1nKHNyYyA9IGtuaXRyOjppbWFnZV91cmkobG9nb19wYXRoKSwgCiAgICAgICAgICAgICAgIGFsdCA9ICJsb2dvIiwgCiAgICAgICAgICAgICAgIHN0eWxlID0gInBvc2l0aW9uOmFic29sdXRlOyB0b3A6MDsgcmlnaHQ6MDsgcGFkZGluZzoxMHB4OyB3aWR0aDogMTQ1cHg7IGhlaWdodDogNDJweCIpCmBgYAoKYGBge3IgbG9hZCBwYWNrYWdlcywgaW5jbHVkZSA9IEZBTFNFfQojIExpc3QgcmVxdWlyZWQgcGFja2FnZXMKY3JhblBhY2thZ2VzIDwtIGMoIkJpb2NNYW5hZ2VyIiwgImdncGxvdDIiLCAiZHBseXIiLCAidGlkeXIiLAogICAgICAgICAgICAgICAgICAiYXBlIiwgImdncGxvdDIiLCAicmVzaGFwZTIiLCAicGxvdGx5IiwgImhlYXRtYXBseSIpCmJpb2NQYWNrYWdlcyA8LSBjKCJwaHlsb3NlcSIsICJCaW9zdHJpbmdzIikKCiMgSW5zdGFsbCBtaXNzaW5nIENSQU4gcGFja2FnZXMKaW5zdGFsbGVkQ1JBTiA8LSBjcmFuUGFja2FnZXMgJWluJSByb3duYW1lcyhpbnN0YWxsZWQucGFja2FnZXMoKSkKaWYgKGFueShpbnN0YWxsZWRDUkFOID09IEZBTFNFKSkgewogIGluc3RhbGwucGFja2FnZXMoY3JhblBhY2thZ2VzWyFpbnN0YWxsZWRDUkFOXSwKICAgICAgICAgICAgICAgICAgIHJlcG9zID0gJ2h0dHA6Ly9jcmFuLnVzLnItcHJvamVjdC5vcmcnKQp9CgojIEluc3RhbGwgbWlzc2luZyBCaW9jb25kdWN0b3IgcGFja2FnZXMKaW5zdGFsbGVkQmlvYyA8LSBiaW9jUGFja2FnZXMgJWluJSByb3duYW1lcyhpbnN0YWxsZWQucGFja2FnZXMoKSkKaWYgKGFueShpbnN0YWxsZWRCaW9jID09IEZBTFNFKSkgewogIEJpb2NNYW5hZ2VyOjppbnN0YWxsKGJpb2NQYWNrYWdlc1shaW5zdGFsbGVkQmlvY10pCn0KCiMgTG9hZCBwYWNrYWdlcwpsYXBwbHkoYyhjcmFuUGFja2FnZXMsIGJpb2NQYWNrYWdlcyksIGxpYnJhcnksIGNoYXJhY3Rlci5vbmx5ID0gVFJVRSkKYGBgCgpgYGB7ciBsb2FkIGRhdGEsIGluY2x1ZGUgPSBGQUxTRX0KIyBMb2FkIENvc21vc0lEIGRhdGEgYW5kIGZvcm1hdHRlZCBtZXRhZGF0YQpjb3Ntb3MgPC0gcmVhZC5jc3YoZmlsZSA9ICIuLi9kYXRhL0NQMDQ2MThfY29zbW9zaWRfMjAyMjA5MDYuY3N2IikKbWV0YSA8LSByZWFkLmNzdihmaWxlID0gIi4uL2RhdGEvQ1AwNDYxOF9tZXRhZGF0YS5jc3YiKQpgYGAKCmBgYHtyIGZvcm1hdCBkYXRhLCBpbmNsdWRlID0gRkFMU0V9CiMgUHJlcGFyZSB0YXhfdGFibGUgYW5kIG90dV90YWJsZSBvYmplY3RzCnRheCA8LSBjb3Ntb3MgJT4lCiAgc2VsZWN0KFBoeWx1bSwgQ2xhc3MsIE9yZGVyLCBGYW1pbHksIEdlbnVzLCBTcGVjaWVzLCBTdHJhaW4pICU+JQogIGFzLm1hdHJpeCAlPiUKICB0YXhfdGFibGUKCnN0YXJ0X2luZCA8LSBncmVwKCJTdHJhaW4iLCBjb2xuYW1lcyhjb3Ntb3MpKSsxCnN0b3BfaW5kIDwtIG5jb2woY29zbW9zKS0yCmFidW5kYW5jZV9zY29yZXMgPC0gY29zbW9zWyxzdGFydF9pbmQ6c3RvcF9pbmRdICU+JSBvdHVfdGFibGUoLiwgdGF4YV9hcmVfcm93cyA9IFRSVUUpCgojIFJlZm9ybWF0IHNhbXBsZSBuYW1lcyBhbmQgbWV0YWRhdGEgc2FtcGxlIG5hbWVzIHNvIHRoZXkgbWF0Y2gKY29sbmFtZXMoYWJ1bmRhbmNlX3Njb3JlcykgPC0gY29sbmFtZXMoYWJ1bmRhbmNlX3Njb3JlcykgJT4lCiAgZ3N1YigiWCIsICIiLCAuKSAlPiUKICBnc3ViKCJfLioiLCAiIiwgLikgJT4lCiAgcGFzdGUwKCJFQl8iLCAuKQoKcm93Lm5hbWVzKG1ldGEpIDwtIG1ldGEgJT4lCiAgcHVsbChTYW1wbGVfbnVtYmVyKSAlPiUKICBwYXN0ZTAoIkVCXyIsIC4pCgpzYW1fZGF0YSA8LSBzYW1wbGVfZGF0YShtZXRhKQpgYGAKCmBgYHtyIGJ1aWxkIHBoeWxvc2VxLCBpbmNsdWRlID0gRkFMU0V9CiMgQnVpbGQgcGh5bG9zZXEgb2JqZWN0CnBzIDwtIHBoeWxvc2VxKHRheCwgYWJ1bmRhbmNlX3Njb3Jlcywgc2FtX2RhdGEpCmBgYAoKYGBge3IgdHJhbnNmb3JtIGRhdGEsIGluY2x1ZGUgPSBGQUxTRX0KIyBMb2cgdHJhbnNmb3JtCnBzTG9nIDwtIHBzICU+JSB0cmFuc2Zvcm1fc2FtcGxlX2NvdW50cyguLCBmdW5jdGlvbih4KSBsb2coeCArIDEsIGJhc2UgPSAxMCkpCgojIFJlbGF0aXZlIGFidW5kYW5jZSB0cmFuc2Zvcm0KcHNSQSA8LSBwcyAlPiUgdHJhbnNmb3JtX3NhbXBsZV9jb3VudHMoLiwgZnVuY3Rpb24oeCkgeC9zdW0oeCkqMTAwKQpgYGAKCmBgYHtyIHJhbmsgcGh5bGEsIGluY2x1ZGUgPSBGQUxTRX0KcGh5X3JhbmsgPC0gcHNSQSAlPiUKICB0YXhfZ2xvbSguLCB0YXhyYW5rID0gIlBoeWx1bSIpICU+JQogIHBzbWVsdCAlPiUKICBncm91cF9ieShQaHlsdW0pICU+JQogIHN1bW1hcmlzZShtZWRpYW4gPSBtZWRpYW4oQWJ1bmRhbmNlKSkKCnBoeV9yYW5rICU+JSBhcnJhbmdlKGRlc2MobWVkaWFuKSkKYGBgCgpgYGB7ciBzdWJqZWN0IHN1YnNldCwgaW5jbHVkZSA9IEZBTFNFfQojIFNldCBzdWJqZWN0CnN1YmplY3QgPC0gIkdLIgoKIyBTdWJzZXQgdG8gc3ViamVjdCBzYW1wbGVzIGFuZCBkcm9wIG1pc3NpbmcgdGF4YQpwc1N1YiA8LSBzdWJzZXRfc2FtcGxlcyhwcywgU3ViamVjdCA9PSBzdWJqZWN0KSAlPiUKICBwcnVuZV90YXhhKHRheGFfc3VtcyguKSA+IDAsIC4pCgojIEFkZCBwbG90IGxhYmVsIGZvciBlYWNoIHNhbXBsZQpzYW1wbGVfZGF0YShwc1N1YikkUGxvdF9sYWJlbCA8LSBwYXN0ZTAoc2FtcGxlX25hbWVzKHBzU3ViKSwgIiAoIiwgc2FtcGxlX2RhdGEocHNTdWIpJFNhbXBsZV90eXBlLCAiKSIpCgojIFJlbGF0aXZlIGFidW5kYW5jZSB0cmFuc2Zvcm0KcHNTdWJfcmEgPC0gcHNTdWIgJT4lIHRyYW5zZm9ybV9zYW1wbGVfY291bnRzKC4sIGZ1bmN0aW9uKHgpIHgvc3VtKHgpKjEwMCkKYGBgCgpgYGB7ciBwbG90IGJhciwgaW5jbHVkZSA9IEZBTFNFfQojIERlZmluZSBOT1QgSU4gb3BlcmF0b3IKJyUhaW4lJyA8LSBmdW5jdGlvbih4LHkpISgnJWluJScoeCx5KSkKCiMgQWdnbG9tZXJhdGUgYXQgR2VudXMgYW5kIG1lbHQKdGF4cmFuayA8LSAiR2VudXMiCm1lbHQgPC0gcHNTdWJfcmEgJT4lIHRheF9nbG9tKC4sIHRheHJhbmsgPSB0YXhyYW5rKSAlPiUgcHNtZWx0CgojIERlZmluZSBtYWpvciBwaHlsYQptYWpvcl9waHkgPC0gYygiRmlybWljdXRlcyIsICJBY3Rpbm9iYWN0ZXJpYSIsICJCYWN0ZXJvaWRldGVzIiwgIlByb3Rlb2JhY3RlcmlhIikKCiMgSWRlbnRpZnkgZ2VuZXJhIHByZXNlbnQgaW4gPDElIHJlbGF0aXZlIGFidW5kYW5jZSBpbiBhbGwgc2FtcGxlcwpyYXJlX2dlbmVyYSA8LSBtZWx0ICU+JQogIGdyb3VwX2J5KFNhbXBsZV9udW1iZXIsIEdlbnVzKSAlPiUKICBzdW1tYXJpemUoc3VtID0gc3VtKEFidW5kYW5jZSkpICU+JQogIHVuZ3JvdXAoKSAlPiUKICBncm91cF9ieShHZW51cykgJT4lCiAgc3VtbWFyaXplKG1heCA9IG1heChzdW0pKSAlPiUKICBmaWx0ZXIobWF4IDwgMSkgJT4lCiAgcHVsbChHZW51cykKCiMgQ3JlYXRlIG5ldyBjb2x1bW4gY29udGFpbmluZyBuYW1lIG9mIGdlbnVzIGlmIGFib3ZlIGN1dG9mZiBvciAiT3RoZXIgZ2VuZXJhIiBpZiBub3QKZGYgPC0gbWVsdCAlPiUKICBtdXRhdGUoUGh5X2dyb3VwID0gY2FzZV93aGVuKFBoeWx1bSAlIWluJSBtYWpvcl9waHkgfiAiT3RoZXIgcGh5bHVtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUgfiBQaHlsdW0pLAogICAgICAgICBQaHlfZ3JvdXAgPSBjYXNlX3doZW4oR2VudXMgJWluJSByYXJlX2dlbmVyYSB+ICJPdGhlciBwaHlsdW0iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSB+IFBoeV9ncm91cCksCiAgICAgICAgIFRheF9sYWJlbCA9IGNhc2Vfd2hlbihHZW51cyAlaW4lIHJhcmVfZ2VuZXJhIH4gIkFhT3RoZXIgZ2VuZXJhIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUgfiBHZW51cykpICU+JQogIGdyb3VwX2J5KFN1YmplY3QpICU+JQogIGFycmFuZ2UoU3ViamVjdCwgU2FtcGxlX3R5cGUpCgojIERlZmluZSBvcmRlcgpwaHlfb3JkZXIgPC0gYygiT3RoZXIgcGh5bHVtIiwKICAgICAgICAgICAgICAgIlByb3Rlb2JhY3RlcmlhIiwKICAgICAgICAgICAgICAgIkJhY3Rlcm9pZGV0ZXMiLAogICAgICAgICAgICAgICAiQWN0aW5vYmFjdGVyaWEiLAogICAgICAgICAgICAgICAiRmlybWljdXRlcyIpICU+JSByZXYKCmdlbl9vcmRlciA8LSBkZiAlPiUKICBzZWxlY3QoUGh5X2dyb3VwLCBUYXhfbGFiZWwpICU+JQogIG11dGF0ZShPcmRlciA9IG1hdGNoKFBoeV9ncm91cCwgcGh5X29yZGVyKSkgJT4lCiAgYXJyYW5nZShPcmRlciwgZGVzYyhUYXhfbGFiZWwpKSAlPiUKICBkaXN0aW5jdCAlPiUKICBwdWxsKFRheF9sYWJlbCkKCmdlbl9vcmRlciA8LSBmYWN0b3IoZ3N1YigiXkFhIiwgIiIsIGdlbl9vcmRlciksIGxldmVscyA9IGdzdWIoIl5BYSIsICIiLCBnZW5fb3JkZXIpKSAjIHRoZSBBYSBpcyB0byBtYWtlIHN1cmUgIk90aGVyIiBpcyBwbG90dGVkIGF0IHRoZSB0b3AKCmRmIDwtIGRmICU+JQogIG11dGF0ZShUYXhfbGFiZWwgPSBmYWN0b3IoZ3N1YigiXkFhIiwgIiIsIFRheF9sYWJlbCksIGxldmVscyA9IGdlbl9vcmRlcikpCgojIERlZmluZSBjb2xvcnMKcGh5X2NvbG9yIDwtIGRhdGEuZnJhbWUoUGh5bHVtID0gYygiQWN0aW5vYmFjdGVyaWEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPdGhlciBwaHlsdW0iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCYWN0ZXJvaWRldGVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmlybWljdXRlcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlByb3Rlb2JhY3RlcmlhIiksCiAgICAgICAgICAgICAgICAgICAgICAgIEJhc2VfY29sb3IgPSBjKCIjRkZCNzI0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiM4MzJDRkYiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIzY0QzYyQSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIjMDcyQUM4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiNFOTNCNEYiKSkKCnBoeV9jb2xvciA8LSBwaHlfY29sb3JbbWF0Y2gocGh5X29yZGVyLCBwaHlfY29sb3IkUGh5bHVtKSxdCgojIERhdGEgZnJhbWUgYXMgaW5wdXQsIGRhdGEgZnJhbWUgd2l0aCBuZXcgY29sdW1uIG9mIGhleCBjb2RlcyBhcyBvdXRwdXQKY29sX3BhbGV0dGUgPC0gZGYgJT4lCiAgc2VsZWN0KFBoeV9ncm91cCwgVGF4X2xhYmVsKSAlPiUKICBkaXN0aW5jdCAlPiUKICBtdXRhdGUoSGV4X2NvZGUgPSBOQSkKCgpmb3IocGh5IGluIHBoeV9jb2xvciRQaHlsdW0pIHsKICB0ZXN0IDwtIGNvbF9wYWxldHRlICU+JQogICAgZmlsdGVyKFBoeV9ncm91cCA9PSBwaHkpICU+JQogICAgcHVsbChUYXhfbGFiZWwpICU+JQogICAgZHJvcGxldmVscyAlPiUKICAgIGxldmVscwogIAogIHRheC5jb2xvciA8LSBjb2xvclJhbXBQYWxldHRlKGMocGh5X2NvbG9yJEJhc2VfY29sb3JbbWF0Y2gocGh5LCBwaHlfY29sb3IkUGh5bHVtKV0sICJ3aGl0ZSIpKQogIGNvbHRlc3QgPC0gdGF4LmNvbG9yKGxlbmd0aCh0ZXN0KSsyKSAlPiUKICAgIC5bLWxlbmd0aCguKV0KICBjb2xfcGFsZXR0ZSRIZXhfY29kZVttYXRjaCh0ZXN0LCBjb2xfcGFsZXR0ZSRUYXhfbGFiZWwpXSA8LSBjb2x0ZXN0Cn0KCmNvbF9wYWxldHRlIDwtIGNvbF9wYWxldHRlICU+JSBhcnJhbmdlKGZhY3RvcihUYXhfbGFiZWwsIGxldmVscyA9IGdlbl9vcmRlcikpCmBgYAoKPGRpdiBjbGFzcz0iaGlnaGxpZ2h0Ij4KIyMjIDEuMSBPdmVydmlldyBvZiBtaWNyb2JpYWwgY29tbXVuaXR5IGNvbXBvc2l0aW9uCjwvZGl2PgoKRmlndXJlIDEgaXMgYW4gaW50ZXJhY3RpdmUgZmlndXJlIHNob3dpbmcgdGhlIG1pY3JvYmlhbCBjb21tdW5pdHkgY29tcG9zaXRpb24gaW4gZWFjaCBjb2xsZWN0ZWQgc2FtcGxlLiBIZXJlLCBlYWNoIGNvbG9yIGFuZCBzaGFkZSBjb3JyZXNwb25kcyB0byBhIGRpZmZlcmVudCBnZW51cy4gRm9yIHJlZmVyZW5jZSwgZG9tZXN0aWMgZG9ncyAoKkNhbmlzIGZhbWlsaWFyaXMqKSBhbmQgZ3JheSB3b2x2ZXMgKCpDYW5pcyBsdXB1cyopIGFyZSBkaWZmZXJlbnQgc3BlY2llcyB0aGF0IGJlbG9uZyB0byB0aGUgc2FtZSBnZW51cyAoKkNhbmlzKikuCjxicj48YnI+CllvdSBjYW4gaW50ZXJhY3Qgd2l0aCB0aGlzIGZpZ3VyZSBieToKCiogSG92ZXJpbmcgdGhlIGN1cnNvciBvdmVyIGEgY29sb3IgaW4gdGhlIHN0YWNrZWQgYmFyIHRvIHNlZSB0aGUgdGF4b25vbWljIGlkZW50aXR5LCBzYW1wbGUgdHlwZSwgYW5kIHJlbGF0aXZlIGFidW5kYW5jZSBjb3JyZXNwb25kaW5nIHRvIHRoYXQgY29sb3IgYW5kIGJhcgoqIENsaWNraW5nIGFuZCBkcmFnZ2luZyB0aGUgY3Vyc29yIG92ZXIgYSBwb3J0aW9uIG9mIHRoZSBmaWd1cmUgdG8gem9vbQoqIFNpbmdsZS1jbGlja2luZyBhIGdlbnVzJ3MgbmFtZSBpbiB0aGUgbGVnZW5kIHRvIHJlbW92ZSB0aGF0IGdlbnVzIGZyb20gdGhlIGZpZ3VyZQoqIERvdWJsZS1jbGlja2luZyAoPHU+dmVyeSBxdWlja2x5PC91PikgYSBnZW51cydzIG5hbWUgaW4gdGhlIGxlZ2VuZCB0byBvbmx5IHNob3cgdGhhdCBnZW51cwpgYGB7ciwgb3V0LndpZHRoID0gIjEwMCUiLCBlY2hvID0gRkFMU0V9CiMgUGxvdApwQmFyIDwtIHBsb3RfbHkoZGYsIHggPSB+UGxvdF9sYWJlbCwgeSA9IH5BYnVuZGFuY2UsIHR5cGUgPSAiYmFyIiwKICAgICAgICAgICAgIGNvbG9yID0gflRheF9sYWJlbCwgY29sb3JzID0gY29sX3BhbGV0dGUkSGV4X2NvZGUsCiAgICAgICAgICAgICB0ZXh0cG9zaXRpb24gPSAibm9uZSIsCiAgICAgICAgICAgICB0ZXh0ID0gfnBhc3RlKCI8Yj5HZW51czo8L2I+IiwgVGF4X2xhYmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAiPGJyPjxicj4iLCAiPGI+U2FtcGxlIHR5cGU6PC9iPiIsIFNhbXBsZV90eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAiPGJyPiIsICI8Yj5SZWxhdGl2ZSBhYnVuZGFuY2U6PC9iPiIsIHBhc3RlMChyb3VuZChBYnVuZGFuY2UsIGRpZ2l0cyA9IDEpLCAiJSIpKSwKICAgICAgICAgICAgIGhvdmVyaW5mbyA9ICJ0ZXh0IikgJT4lCiAgbGF5b3V0KHhheGlzID0gbGlzdCh0aXRsZSA9ICI8Yj5TYW1wbGU8L2I+IiwKICAgICAgICAgICAgICAgICAgICAgIHRpY2tzID0gIm91dHNpZGUiKSwKICAgICAgICAgeWF4aXMgPSBsaXN0KHRpdGxlID0gIjxiPlJlbGF0aXZlIGFidW5kYW5jZSAoJSk8L2I+IiwKICAgICAgICAgICAgICAgICAgICAgIHRpY2tzID0gIm91dHNpZGUiKSwKICAgICAgICAgYmFybW9kZSA9ICJzdGFjayIsCiAgICAgICAgIGZvbnQgPSBsaXN0KGZhbWlseSA9ICJBcmlhbCIpKQoKcEJhciR4JGxheW91dCR5YXhpcyRsaW5lY29sb3IgPC0gIiMwMDAwMDAiCnBCYXIKYGBgCioqRmlndXJlIDE6KiogTWljcm9iaWFsIGNvbW11bml0eSBjb21wb3NpdGlvbiBvZiBjb2xsZWN0ZWQgc2FsaXZhIGFuZCBDYXBTY2FuIHNhbXBsZXMuIFRheG9ub21pYyBjb21wb3NpdGlvbiBpcyByZXBvcnRlZCBhdCB0aGUgZ2VudXMgcmFuay4gR2VuZXJhIHByZXNlbnQgYXQgPDElIHJlbGF0aXZlIGFidW5kYW5jZSBhY3Jvc3MgYWxsIHNhbXBsZXMgYXJlIHJlcG9ydGVkIGFzICJPdGhlciBnZW5lcmEiLiA8dT5Ob3RlOjwvdT4gQmx1ZSA9ICpGaXJtaWN1dGVzKjsgWWVsbG93ID0gKkFjdGlub215Y2V0ZXMqOyBHcmVlbiA9ICpCYWN0ZXJvaWRldGVzKjsgUmVkID0gKlByb3Rlb2JhY3RlcmlhKjsgUHVycGxlID0gYWxsIG90aGVyIHBoeWxhLiBTaGFkZXMgb2YgdGhlIHNhbWUgY29sb3IgKGV4Y2VwdCBwdXJwbGUpIGNvcnJlc3BvbmQgdG8gZGlmZmVyZW50IGdlbmVyYSBmcm9tIHRoZSBzYW1lIHBoeWx1bS4KCmBgYHtyLCBpbmNsdWRlID0gRkFMU0V9CiMgT3JkaW5hdGlvbi1iYXNlZAojcEhlYXRfb3JkIDwtIHBsb3RfaGVhdG1hcChwc1N1Yl9yYSwgbWV0aG9kID0gIk5NRFMiLCBkaXN0YW5jZSA9ICJicmF5IiwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgdGF4YS5sYWJlbCA9ICJTdHJhaW4iLAojICAgICAgICAgICAgICAgICAgICAgICAgICBtYXgubGFiZWwgPSAzMDApCiMKIyBSZXRyaWV2ZSByb3cgYW5kIHRheG9uIG9yZGVycwojcm93X29yZGVyIDwtIHBIZWF0X29yZCRwbG90X2VudiR0YXhhLm9yZGVyICU+JSByZXYKI3RheF9vcmRlciA8LSB0YXhfdGFibGUocHNTdWJfcmEpW21hdGNoKHJvd19vcmRlciwgcm93bmFtZXModGF4X3RhYmxlKHBzU3ViX3JhKSkpLF0gJT4lCiMgIGFzLmRhdGEuZnJhbWUgJT4lCiMgIG11dGF0ZSh0YXhvbiA9IHJvd25hbWVzKC4pLAojICAgICAgICAgQWJ1bmRhbmNlID0gMSwKIyAgICAgICAgIFNhbXBsZSA9IHN1YmplY3QpCiMgT3JkZXIgYnkgcmVsYXRpdmUgYWJ1bmRhbmNlIHdpdGhpbiBzYW1wbGVzCnJvd19vcmRlciA8LSBvdHVfdGFibGUocHNTdWJfcmEpICU+JQogIGFzLmRhdGEuZnJhbWUgJT4lCiAgYXJyYW5nZShFQl8yNTksIEVCXzI2MAogICAgICAgICAgKSAlPiUKICByb3duYW1lcwpgYGAKCmBgYHtyLCBpbmNsdWRlID0gRkFMU0V9CiMgUHJlcGFyZSBkYXRhCnggPC0gcHNTdWJfcmEgJT4lIG90dV90YWJsZSAlPiUgYXMuZGF0YS5mcmFtZQpjb2xuYW1lcyh4KSA8LSBsYXBwbHkoY29sbmFtZXMoeCksIGdyZXAsIHNhbXBsZV9kYXRhKHBzU3ViX3JhKSRQbG90X2xhYmVsLCB2YWx1ZSA9IFRSVUUpICU+JSB1bmxpc3QKCiMgQWRkIHRheG9ub215CnggPC0gY2JpbmQoeCwgdGF4X3RhYmxlKHBzU3ViX3JhKSkKCiMgUmVvcmRlciByb3dzIGFuZCBjb2x1bW5zIHRvIG1hdGNoIG9yZGluYXRpb24KeCA8LSB4W21hdGNoKHJvd19vcmRlciwgcm93bmFtZXMoeCkpLF0KCiMgU2V0IGhvdmVydGV4dApuc2FtcCA8LSBuc2FtcGxlcyhwc1N1Yl9yYSkKaG92ZXJfc3RyYWluIDwtIHhbLCAxOm5zYW1wXQpob3Zlcl9zdHJhaW5bXSA8LSBwYXN0ZTAoIjxiPk1pY3JvYmU6PC9iPiAiLCB4JFN0cmFpbiwgIlxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICI8Yj5SZWxhdGl2ZSBhYnVuZGFuY2U6PC9iPiAiKQpob3Zlcl9zdHJhaW4gPC0gYXMubWF0cml4KGhvdmVyX3N0cmFpbikKCmhvdmVyX2FidW5kIDwtIHhbLCAxOm5zYW1wXSAlPiUgcm91bmQoLiwgZGlnaXRzID0gMikgJT4lIGFzLmRhdGEuZnJhbWUKaG92ZXJfYWJ1bmQgPC0gYXBwbHkoaG92ZXJfYWJ1bmQsIDIsIHBhc3RlMCwgIiUiKQpob3Zlcl9hYnVuZCA8LSBhcy5tYXRyaXgoaG92ZXJfYWJ1bmQpCgpob3Zlcl90YXggPC0geFssIDE6bnNhbXBdCmhvdmVyX3RheFtdIDwtIHBhc3RlMCgiXG4gXG48Yj5QaHlsdW06PC9iPiAiLCB4JFBoeWx1bSwgIlxuIiwKICAgICAgICAgICAgICAgICAgICI8Yj5DbGFzczo8L2I+ICIsIHgkQ2xhc3MsICJcbiIsCiAgICAgICAgICAgICAgICAgICAiPGI+T3JkZXI6PC9iPiAiLCB4JE9yZGVyLCAiXG4iLAogICAgICAgICAgICAgICAgICAgIjxiPkZhbWlseTo8L2I+ICIsIHgkRmFtaWx5LCAiXG4iLAogICAgICAgICAgICAgICAgICAgIjxiPkdlbnVzOjwvYj4gIiwgeCRHZW51cywgIlxuIikKaG92ZXJfdGF4IDwtIGFzLm1hdHJpeChob3Zlcl90YXgpCgpob3ZlcnRleHQgPC0gbWF0cml4KHBhc3RlMChob3Zlcl9zdHJhaW4sIGhvdmVyX2FidW5kLCBob3Zlcl90YXgpLAogICAgICAgICAgICAgICAgbnJvdyA9IG5yb3coaG92ZXJfdGF4KSwgbmNvbCA9IG5jb2woaG92ZXJfdGF4KSkKCiMgUGVyZm9ybSBsb2cxMCB0cmFuc2Zvcm1hdGlvbiBvbiByZWxhdGl2ZSBhYnVuZGFuY2VzCmRhdGEgPC0gbG9nKHhbLCAxOm5zYW1wXSwgYmFzZSA9IDEwKQpkYXRhW3NhcHBseShkYXRhLCBpcy5pbmZpbml0ZSldIDwtIE5BCmBgYAo8YnI+PGJyPgoKPGRpdiBjbGFzcz0iaGlnaGxpZ2h0Ij4KIyMjIDEuMiBIaWdoLXJlc29sdXRpb24gc25hcHNob3Qgb2YgY29tbXVuaXR5IGNvbXBvc2l0aW9uCjwvZGl2PgpGaWd1cmUgMiBpcyBhbiBpbnRlcmFjdGl2ZSBmaWd1cmUgc2hvd2luZyB0aGUgbWljcm9iaWFsIGNvbW11bml0eSBjb21wb3NpdGlvbiBhdCBoaWdoZXIgdGF4b25vbm9taWMgcmVzb2x1dGlvbi4gSGVyZSwgZWFjaCByb3cgY29ycmVzcG9uZHMgdG8gYSB1bmlxdWUgbWljcm9iZS4KPGJyPjxicj4KWW91IGNhbiBpbnRlcmFjdCB3aXRoIHRoaXMgZmlndXJlIGJ5OgoKKiBIb3ZlcmluZyB0aGUgY3Vyc29yIG92ZXIgYSBjZWxsIHRvIHNlZSB0aGF0IG1pY3JvYmUncyBnZW51cyBhbmQgc3BlY2llcyAoYW5kIHN0cmFpbiB3aGVuIGF2YWlsYWJsZSksIHJlbGF0aXZlIGFidW5kYW5jZSwgYW5kIGZ1bGwgdGF4b25vbWljIGNsYXNzaWZpY2F0aW9uCiogQ2xpY2tpbmcgYW5kIGRyYWdnaW5nIHRoZSBjdXJzb3Igb3ZlciBhIHBvcnRpb24gb2YgdGhlIGZpZ3VyZSB0byB6b29tCgo8YnI+PGJyPgpgYGB7ciwgb3V0LmhlaWdodCA9ICI3NTBweCIsIGVjaG8gPSBGQUxTRX0KIyBTZXQgc2FtcGxlIG5hbWVzCiNjb2xuYW1lcyhkYXRhKSA8LSBjKCJFQl8yNjkgKHNhbGl2YSkiLCAiRUJfMjcwIChDYXBTY2FuKSIsICJFQl8yNzEgKENhcFNjYW4pIiwKIyAgICAgICAgICAgICAgICAgICAgIkVCXzI3MiAoQ2FwU2NhbikiLCAiRUJfMjczIChDYXBTY2FuKSIsICJFQl8yNzQgKHN0b29sKSIpCgojIFByZXBhcmUgdGF4b25vbXkgcm93IHNpZGUKcm93X3NpZGUgPC0geCAlPiUgc2VsZWN0KFBoeWx1bSkKcm93X3NpZGUkUGh5bHVtW3Jvd19zaWRlJFBoeWx1bSAlIWluJSBtYWpvcl9waHldIDwtICJPdGhlciBwaHlsYSIKcm93X3NpZGUkUGh5bHVtIDwtIGZhY3Rvcihyb3dfc2lkZSRQaHlsdW0sIGxldmVscyA9IGMoIk90aGVyIHBoeWxhIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlByb3Rlb2JhY3RlcmlhIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJhY3Rlcm9pZGV0ZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQWN0aW5vYmFjdGVyaWEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmlybWljdXRlcyIpKQoKIyBQbG90CnBIZWF0IDwtIGhlYXRtYXBseShkYXRhLAogICAgICAgICAgICAgICAgICAgUm93diA9IEZBTFNFLAogICAgICAgICAgICAgICAgICAgQ29sdiA9IEZBTFNFLAogICAgICAgICAgICAgICAgICAgY29sb3JzID0gdmlyaWRpczo6dmlyaWRpcygxMCksCiAgICAgICAgICAgICAgICAgICByb3dfc2lkZV9jb2xvcnMgPSByb3dfc2lkZSwKICAgICAgICAgICAgICAgICAgIHJvd19zaWRlX3BhbGV0dGUgPSBjKCJBY3Rpbm9iYWN0ZXJpYSIgPSAiI0ZGQjcyNCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQmFjdGVyb2lkZXRlcyIgPSAiIzY0QzYyQSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmlybWljdXRlcyIgPSAiIzA3MkFDOCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUHJvdGVvYmFjdGVyaWEiID0gIiNFOTNCNEYiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk90aGVyIHBoeWxhIiA9ICIjODMyQ0ZGIiksCiAgICAgICAgICAgICAgICAgICBzdWJwbG90X21hcmdpbiA9IDAuMDEsCiAgICAgICAgICAgICAgICAgICBzdWJwbG90X3dpZHRocyA9IGMoMC45LCAwLjA3KSwKICAgICAgICAgICAgICAgICAgIHNpZGVfY29sb3JfY29sb3JiYXJfbGVuID0gMC4zLAogICAgICAgICAgICAgICAgICAgcGxvdF9tZXRob2QgPSAicGxvdGx5IiwKICAgICAgICAgICAgICAgICAgIGN1c3RvbV9ob3ZlcnRleHQgPSBob3ZlcnRleHQsCiAgICAgICAgICAgICAgICAgICB4bGFiID0gIjxiPlNhbXBsZTwvYj4iLAogICAgICAgICAgICAgICAgICAgeWxhYiA9ICI8Yj5NaWNyb2JlPC9iPiIsCiAgICAgICAgICAgICAgICAgICBjb2xvcmJhcl94cG9zID0gMS4wMTksCiAgICAgICAgICAgICAgICAgICBjb2xvcmJhcl95cG9zID0gMC41LAogICAgICAgICAgICAgICAgICAgY29sb3JiYXJfbGVuID0gMC4zKSAlPiUKICBsYXlvdXQoeGF4aXMgPSBsaXN0KHNob3dncmlkID0gRkFMU0UpLAogICAgICAgICB5YXhpcyA9IGxpc3Qoc2hvd2dyaWQgPSBGQUxTRSwKICAgICAgICAgICAgICAgICAgICAgIHNob3d0aWNrbGFiZWxzID0gRkFMU0UpLAogICAgICAgICBmb250ID0gbGlzdChmYW1pbHkgPSAiQXJpYWwiKSkgJT4lCiAgY29sb3JiYXIodGl0bGUgPSAiUmVsYXRpdmUgYWJ1bmRhbmNlIiwKICAgICAgICAgICB0aWNrdmFscyA9IGMoLTEsIDAsIDEpLAogICAgICAgICAgIHRpY2t0ZXh0ID0gYygiMC4xJSIsICIxJSIsICIxMCUiKSkKCiMgRm9ybWF0IHJvdyBzaWRlCnBIZWF0JHgkbGF5b3V0JHhheGlzMiR0aWNrdGV4dCA8LSAiUGh5bHVtIgpwSGVhdCR4JGxheW91dCR4YXhpcyRsaW5lY29sb3IgPC0gIiMwMDAwMDAiCnBIZWF0JHgkbGF5b3V0JHhheGlzMiRsaW5lY29sb3IgPC0gIiMwMDAwMDAiCnBIZWF0JHgkbGF5b3V0JHlheGlzJGxpbmVjb2xvciA8LSAiIzAwMDAwMCIKcEhlYXQkeCRsYXlvdXQkbGVnZW5kJHlhbmNob3IgPC0gImJvdHRvbSIKcEhlYXQKYGBgCioqRmlndXJlIDI6KiogSGVhdCBtYXAgc2hvd2luZyByZWxhdGl2ZSBhYnVuZGFuY2Ugb2YgbWljcm9iZXMgaW4gZWFjaCBzYW1wbGUgKE4gPSAyMjQgdG90YWwgaWRlbnRpZmllZCkuIEVhY2ggcm93IGNvcnJlc3BvbmRzIHRvIGEgdW5pcXVlIG1pY3JvYmUgYW5kIGVhY2ggY29sdW1uIGNvcnJlc3BvbmRzIHRvIGFuIGluZGl2aWR1YWwgc2FtcGxlLiBOb3RlIHRoZSByZWxhdGl2ZSBhYnVuZGFuY2UgY29sb3JzY2FsZSBpcyBpbiBsb2cgdW5pdHMuCgo8YnI+PGJyPgoKPGRpdiBjbGFzcz0iaGlnaGxpZ2h0Ij4KIyMjIDEuMyBOb3RhYmxlIG1pY3JvYmUgZGV0ZWN0ZWQKPC9kaXY+CgoqICpFdWJhY3Rlcml1bSByZWN0YWxlKjoKICAqIFJlY2VudGx5IHNob3duIHRvIHByb2R1Y2UgYSBtb2xlY3VsZSAobGF1cm95bCB0cnlwdGFtaW5lKSB0aGF0IHN0cnVjdHVyYWxseSBtaW1pY3MgYSBzaWduYWxpbmcgbW9sZWN1bGUgcHJvZHVjZWQgYnkgaHVtYW5zOyBsYXVyb3lsIHRyeXB0YW1pbmUgaW5oaWJpdHMgYSBodW1hbiBwcm90ZWluIGludm9sdmVkIGluIHRyaWdnZXJpbmcgYW4gaW1tdW5lIHJlc3BvbnNlIGFuZCBpbmZsYW1tYXRpb24gKENoYW5nICpldCBhbCouLCAyMDIxKQogICogTW9zdCByZWxhdGl2ZWx5IGFidW5kYW50IG1pY3JvYmUgaW4gQ2FwU2NhbiBzYW1wbGUgKH4xMSUpCiAgCjxicj48YnI+Cgo8ZGl2IGNsYXNzPSJoaWdobGlnaHQiPgojIyMgMS40IFJlZmVyZW5jZXMKPC9kaXY+CgpDaGFuZywgRi5ZLiwgU2l1dGksIFAuLCBMYXVyZW50LCBTLiwgV2lsbGlhbXMsIFQuLCBHbGFzc2V5LCBFLiwgU2FpbGVyLCBBLlcuLCAqZXQgYWwqLiAoMjAyMSkgR3V0LWluaGFiaXRpbmcgQ2xvc3RyaWRpYSBidWlsZCBodW1hbiBHUENSIGxpZ2FuZHMgYnkgY29uanVnYXRpbmcgbmV1cm90cmFuc21pdHRlcnMgd2l0aCBkaWV0LSBhbmQgaHVtYW4tZGVyaXZlZCBmYXR0eSBhY2lkcy4gKk5hdCBNaWNyb2Jpb2wqICoqNjoqKiA3OTLigJM4MDUu